package com.mine.frame.common.net.api

import com.google.gson.JsonObject
import com.mine.frame.common.net.entity.RespondBean
import com.mine.frame.common.net.entity.TestBean
import io.reactivex.rxjava3.core.Observable
import retrofit2.http.*


/**
 * company 广东玛格家居有限公司
 * @author smoker
 * @Date 2021/11/11
 * Description:
 */
public interface ApiService {

    /**
     * 注意：1.Observable<JsonObject>中JsonObject是返回数据的json串格式
     * 2. Observable<UpdateBean>中UpdateBean是返回封装后的实体类  根据自己喜好选择返回方式
     * 3.路径中的变量用 @Path注解来拼接的，不能使用使用@Query或者@QueryMap注解
     * 如/xxx/{index}/xxx.do中的index变量替换必须使用 @Path("index") String index
     * 4.路径后面拼接参数中的变量用 不能用@Path注解来拼接的，使用@Query或者@QueryMap注解
     * 如/xxx/{index}/xxx.do?a=xxxx&b=xxxx&c=xxxx”的urla、b、c赋值是【不能】用@Path注解来拼接的，应该【使用】@Query或者@QueryMap注解
    </UpdateBean></JsonObject> */
    //var HOST = "http://192.168.xx.xx:xxxx" //接口地址

    @GET("/xxx/xxx/xxx.do")
    fun<T> test1(@Query("type") type: String?): Observable<RespondBean<T>>

    @GET("/xxx/xxx/xxx.do")
    fun test2(@QueryMap params: Map<String?, String?>?): Observable<JsonObject?>?

    @FormUrlEncoded
    @POST("/xxx/xxx/xxx.do")
    fun test3(@Field("type") type: String?): Observable<TestBean?>?

    /**
     * 获取城市信息
     */
    @GET
    fun getCityInfo(@Url url: String, @QueryMap params: MutableMap<String, Any>): Observable<MutableMap<String, Any>>
}